package es.ucm.fdi.xtremeaudio.modelo.utils;

import java.io.File;

/**
 * <ul>
 * <li><b>Proyecto:</b> XtremeAudio</li>
 * <li><b>Grupo:</b> 7 <i>(4&deg;B)</i></li>
 * <li><b>Asignatura:</b> Ingenier&iacute;a del Software</li>
 * <li><b>Curso:</b> 2010/2011</li>
 * <li><b>Centro:</b> Universidad Complutense de Madrid</li>
 * </ul>
 * 
 * <b>AbrirDirectorio</b> es una clase que se utiliza como ayuda para procesar
 * la lista archivos con una/s determinada/s extensi&oacute;n/es a la hora de abrir un directorio.
 * 
 * @author &Aacute;lvaro G&oacute;mez Porris
 * @author Elena Hern&aacute;ndez Delgado
 * @author Mar&iacute;a Trinidad Mart&iacute;n Campos
 * @author Mois&eacute;s Mart&iacute;nez Montes
 * @author Mat&iacute;as Salinero Delgado
 * 
 * @version %I%, %G%
 * 
 * @since 1.0
 */
public class AbrirDirectorio {

	private File[] archivosFiltro;
	private File[] archivosTotal;
	private Filtro filtro;

	/**
	 * Constructora.
	 * 
	 * @param dir
	 *            La ruta del directorio.
	 * @param exts
	 *            Las extensiones admitidas.
	 */
	public AbrirDirectorio(File dir, String exts[]) {
		filtro = new Filtro(exts);
		archivosFiltro = dir.listFiles(filtro);
		archivosTotal = dir.listFiles();
	}

	/**
	 * Obtiene la lista de archivos del directorio filtrada.
	 * 
	 * @return La lista.
	 */
	public File[] getArchivosFiltro() {
		return archivosFiltro;
	}

	/**
	 * Obtiene la lista de archivos del directorio.
	 * 
	 * @return La lista.
	 */
	public File[] getArchivosTotal() {
		return archivosTotal;
	}

	/**
	 * Obtiene el archivo, indicado por una posici&oacute;n, de la lista de
	 * archivos del directorio.
	 * 
	 * @param i
	 *            La posici&oacute;n del archivo buscado.
	 * 
	 * @return El archivo.
	 */
	public File getFileFiltro(int i) {
		return archivosFiltro[i];
	}

	/**
	 * Accesora de {@link #filtro}.
	 * 
	 * @return El filtro.
	 */
	public Filtro getFiltro() {
		return filtro;
	}

	/**
	 * @param archivosTotal La nueva lista con todos los archivos.
	 */
	public void setArchivosTotal(File[] archivosTotal) {
		this.archivosTotal = archivosTotal;
	}

	/**
	 * Modificadora de {@link #filtro}.
	 * 
	 * @param filtro El nuevo filtro.
	 */
	public void setFiltro(Filtro filtro) {
		this.filtro = filtro;
	}

}